万卷网> 蓝桥竞赛 >蓝桥C++ > 2025年5月蓝桥杯蓝桥C++(省赛)中/高级

2025年5月蓝桥杯蓝桥C++(省赛)中/高级
省赛 2025 2025-07-24 13:22:48 117

一、单选题

1.

执行语句 cout << "1 + 2 = " << 1 + 2; 的结果是?( )

A.

1 + 2 = 1 + 2

B.

3 = 1 + 2

C.

3 = 3

D.

1 + 2 = 3

2.

下列选项中,能够正确定义并初始化浮点型变量的是?( )

A.

int a = 10;

B.

float a = 2.0;

C.

char a = 'A';

D.

int a = 1.2;

3.

下列选项中,等式不成立的是?( )

A.

(1011)2 = 11

B.

(1203)4 = 99

C.

(356)8 = 237

D.

(2DF)16 = 735

4.

运行以下程序,输出的结果是?( )

int arr[5] = {11, 31, 19, 125, 37};
int *p = arr + 2;
cout << p[1] << " " << (&arr[1] + 3 - p);

A.

11 3

B.

31 2

C.

19 3

D.

125 2

5.

运行以下程序,输出的结果是?( )

int x = 5;
if(x > 0) {
    int x = 10;
    cout << x << " ";
}
cout << x;
A.

5 10

B.

5 5

C.

10 10

D.

10 5

二、编程题

1.

吃粽子

题目描述:

端午节到了,部落联盟准备了 k 个粽子。n 个部落首领按编号 1 到 n 轮流吃粽子。

每轮每人吃的粽子数等于轮次数(第 1 轮每人吃 1 个,第 2 轮每人吃 2 个,依此类推),直到吃掉最后一个粽子。

吃掉最后一个粽子的首领即为获胜者。给定 n 和 k,请计算获胜的首领编号。

例如,n = 3,k = 13,吃粽子过程如下:

第一轮,1 号首领吃 1 个粽子(第 1 个),2 号首领吃 1 个粽子(第 2 个),3 号首领吃 1 个粽子(第 3 个);

第二轮,1 号首领吃 2 个粽子(第 4、5 个),2 号首领吃 2 个粽子(第 6、7 个),3 号首领吃 2 个粽子(第 8、9 个);

第三轮,1 号首领吃 3 个粽子(第 10、11、12 个),2 号首领吃掉最后一个粽子;

显然,2 号首领是获胜者。

输入描述:

一行输入两个整数 n 和 k(2≤n≤105,1≤k≤109),分别表示部落首领的数量以及粽子的数量,整数间以一个空格隔开。


输出描述:

输出一个整数,表示获胜的首领编号。

样例输入:

3 13

样例输出:

2
2.

购物活动

题目描述:

某在线购物平台推出了两种优惠活动。每位顾客在同一订单中只能享受其中一种优惠。具体优惠规则如下:

(1)五折优惠:顾客可以享受商品总价格的五折(即原价 × 0.5);

(2)满减优惠:如果顾客购买的商品总价格达到或超过 300 元,则可以在付款时直接减免 200 元。

给定顾客一笔订单的实际支付金额,请计算该顾客可能购买的商品总价格的最大值是多少?

例如:顾客实际支付 120 元。如果他最初选择的是优惠( 1),则商品的总价格为 240 元;

如果他最初选择的是优惠(2),则商品的总价格为 320 元;显然,该顾客购买的商品总价格的最大值为 320 元。

输入描述:

输入一个整数(1≤整数≤1000),表示顾客实际支付的金额。

输出描述:

输出一个整数,表示该顾客可能购买的商品总价格的最大值。


样例输入:

120

样例输出:

320
3.

零食好友

题目描述:

有 n 个小朋友去参加户外野餐活动,他们被分成了 m 个小组,保证每个小组至少有一个小朋友。

在野餐过程中,同一小组内的任意两个小朋友都会互相分享零食,成为一对“零食好友”。

你的任务是编写一个程序,请计算对于不同的分组方案,每种方案中的所有小组的“零食好友”的对数之和,并输出其中最小值和最大值分别是多少。

例如:n = 4,m = 2;4 个小朋友被分为 2 个小组。共有两种分组方案:

(1)第一组 1 人,第二组 3 人,则第一组有 0 对“零食好友”,第二组有 3 对“零食好友”,共有 3 对“零食好友”;

(2)第一组 2 人,第二组 2 人,则第一组有 1 对“零食好友”,第二组有 1 对“零食好友”,共有 2 对“零食好友”。

则所有分组方案中,“零食好友”的对数之和的最小值是 2,最大值是 3。

输入描述:

本题的每个测试点都有多组测试数据,格式如下:

第一行输入一个整数 T(1≤T≤100),表示数据组数;

接下来 T 组数据,每组数据输入仅一行,包含两个整数 n 和 m(1≤m≤n≤10^9),分别表示该组数据中小朋友的数量以及分组数量,整数之间以一个空格隔开。

输出描述:

共 T 行,每行输出两个整数,表示对应的测试数据中“零食好友”对数的最小值和最大值,整数之间以一个空格隔开。


样例输入:

2
4 2
8 5

样例输出:

2 3
3 6
4.

弹球游戏

题目描述:

有一个弹球游戏,游戏由 n 行 m 列的网格组成,除最后一行的网格外,其余每个网格中都有一个元素(仙人掌、旋风或地洞)。将弹球投向第一行的网格,弹球到达不同的元素网格会有不同的效果:

(1)到达仙人掌网格:弹球被粘住,无法再移动;

(2)到达旋风网格:弹球可被吹向相邻的三个网格之一:左下、正下、右下,若某个方向无相邻网格,则不吹向该方向;

(3)到达地洞网格:弹球被向下传送两个网格,若超出网格范围,则传送到地洞正下方相邻的网格。

给定网格的行数 n 和列数 m,以及每个网格中的元素类型,请计算弹球从第一行到达最后一行的网格有多少条路线。

例如:n = 3,m = 3;3 行 3 列的网格如下图所示:

弹球一共有 4 条路线到达最后一行:

输入描述:

第一行输入两个整数 n、m(3≤n,m≤100),表示弹球游戏中网格的行数和列数,整数之间以一个空格隔开;

接下来输入 n - 1 行,表示第 1 行到第 n - 1 行的网格情况,每行 m 个整数,整数只能为 1、2、3;

1 表示该网格元素是仙人掌、2 表示该网格元素是旋风,3 表示该网格元素是地洞,同一行的整数之间以一个空格隔开;

最后一行输入 m 个 0,0 表示该网格是第 n 行(最后一行)的网格,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示弹球从第一行到达最后一行的网格有多少条路线。


样例输入:

3 3
1 2 3
3 1 2
0 0 0

样例输出:

4
5.

水龙头

题目描述:

小明在 0 时刻(初始时刻)将一个空桶放置在漏水的水龙头下。已知桶的容量为 H 升,并且每小时桶内的水量增加 x 升。

小明每经过一个小时就会观察一次桶的水位。请计算小明第一次观察到桶内的水溢出时,距离初始时刻经过了多少小时?

输入描述:

一行输入两个整数 H 和 x(10≤H≤100,1≤x≤20),分别表示桶的容量以及每小时桶内增加的水量,整数之间以一个空格隔开。

输出描述:

输出一个整数,表示小明第一次看到桶中的水溢出来时,距离初始时刻经过的小时数。


样例输入:

10 3

样例输出:

4
公众号
客服 反馈
顶部